# ## 文档切割
#
# ### 原理
#
# 1. 将文档分成小的、有意义的块(句子).
# 2. 将小的块组合成为一个更大的块，直到达到一定的大小.
# 3. 一旦达到一定的大小，接着开始创建与下一个块重叠的部分.
#
# ### 示例
#
# - 第一个文档分割
# - 按字符切割
# - 代码文档切割
# - 按token来切割

# 第一个文档切割
from langchain.text_splitter import RecursiveCharacterTextSplitter

#加载要切割的文档
with open("test.txt", encoding="utf-8") as f:
    zuizhonghuanxiang = f.read()

#初始化切割器
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=50,#切分的文本块大小，一般通过长度函数计算
    chunk_overlap=20,#切分的文本块重叠大小，一般通过长度函数计算
    length_function=len,#长度函数,也可以传递tokenize函数
    add_start_index=True,#是否添加起始索引
)

text = text_splitter.create_documents([zuizhonghuanxiang])
print(text[0])
print(text[1])